# coding=utf-8
# 定义一个函数
# 参数 num：int类型
# 返回值：str类型
def num_fun(num: int) -> str:
    return str(num)


# 定义一个函数，两个参数都是int，返回int
def sun_fun(a: int, b: int) -> int:
    return a + b


# 定义一个函数，参数添加默认值
def fun_test(num1: int, num2: float = 12.34) -> float:
    return num1 + num2


print(fun_test(10, 29))  # 30
print(fun_test(10))  # 22.34

# 定义一个变量指向函数
from typing import Callable

# Callable[[参数类型, 参数类型], 返回值类型]
f: Callable[[int, int], int] = sun_fun
print(f(10, 20))  # 30

# 定义函数，产生整数的生成器，每次返回一个
from typing import Iterable


def return_fun(num: int) -> Iterable[int]:
    i = 0
    while i < num:
        yield i
        i += 1


print(return_fun(10))   # <generator object return_fun at 0x00000241595FC430>
for i in return_fun(10):
    print(i)

"""
0
1
2
3
4
5
6
7
8
9
"""